package Collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
    Inerator:迭代器，集合的专用遍历方式
    Inerator<E> iterator():返回此集合中元素的迭代器，通过集合的iterator()方法得到
    迭代器是通过集合的iterator()方法得到的，所以我们说他是依赖于集合而存在的

    Iterator中的常用方法
    E next():返回迭代器中的下一个元素
    Boolean hasNext():如果迭代具有更多元素，则返回 true
 */

public class CollectionDemo遍历 {
    public static void main(String[] args) {


        //创建集合对象
        Collection<String> c = new ArrayList<String>();

        //添加元素
        c.add("hello");
        c.add("world");
        c.add("java");

        //Iterator:返回此集合中元素的迭代器，通过集合的iterator()方法得到
        Iterator<String> it = c.iterator();//通过集合对象获得迭代器对象 以多态的方法得到Iterator
        /*
           public Iterator<E> iterator() {
        return new Itr();
        }

        private class Itr implements Iterator<E> {
        ...
        }
         */
     /*
       System.out.println(it.next());
        System.out.println(it.next());
        System.out.println(it.next());
        System.out.println(it.next());//抛出异常
        */

        //Boolean hasNext():如果迭代具有更多元素，则返回 true
    /*    if (it.hasNext()){
            System.out.println(it.next());
        }
        if (it.hasNext()){
            System.out.println(it.next());
        }

        if (it.hasNext()){
            System.out.println(it.next());
        }
        if (it.hasNext()){
            System.out.println(it.next());//做有无元素的判断不抛出异常
        }
*/

        //用while循环改进
        while (it.hasNext()){//通过迭代器的hasNext方法判断是否还有元素
//            System.out.println(it.next());
            String s=it.next();//通过next()方法获取下一个元素
            System.out.println(s);//拿到的字符串元素做其他操作所以定义一个对象
        }
    }

    }
